clear all
set more off
set scheme s1mono
cd "~/BHVM_Replication/"

use "CCES/CCES16_UVA_OUTPUT_Feb2017_13.dta"
*ssc install coefplot
*bring in LES data by rep name
merge m:1 CurrentHouseName using "CCES/matchfile_UPDATE_full.dta"
cd "~/BHVM_Replication/Code/Results/"


*drop sample if the MC did not serve in 113th (this is not a control group in the experiment)
drop if control==1
*drop sample if no effectiveness information exists
drop if effectiveness==""
* fix errors in CCES data
replace HouseCand1Name="Alcee Hastings" if CurrentHouseName=="Alcee Hastings"
replace HouseCand1Name="Ben Lujan" if CurrentHouseName=="Ben Lujan"
replace HouseCand1Name="Bill Keating" if CurrentHouseName=="Bill Keating"
replace HouseCand1Name="Bob Brady" if CurrentHouseName=="Bob Brady"
replace HouseCand2Name="Chris Smith" if CurrentHouseName=="Chris Smith"
replace HouseCand2Name="Dennis Ross" if CurrentHouseName=="Dennis Ross"
replace HouseCand2Name="Duncan D. Hunter" if CurrentHouseName=="Duncan D. Hunter"
replace HouseCand2Name="Ed Royce" if CurrentHouseName=="Ed Royce"
replace HouseCand1Name="Eddie Johnson" if CurrentHouseName=="Eddie Johnson"
replace HouseCand1Name="Emanuel Cleaver" if CurrentHouseName=="Emanuel Cleaver"
replace HouseCand1Name="Filemon Vela Jr." if CurrentHouseName=="Filemon Vela Jr."
replace HouseCand1Name="Frederica Wilson" if CurrentHouseName=="Frederica Wilson" & HouseCand1Name=="Frederica S. Wilson"
replace HouseCand1Name="Gerry Connolly" if CurrentHouseName=="Gerry Connolly" & HouseCand1Name=="Gerald Connolly"
replace HouseCand1Name="Jan Schakowsky" if CurrentHouseName=="Jan Schakowsky"
replace HouseCand2Name="Jason T. Smith" if CurrentHouseName=="Jason T. Smith"
replace HouseCand2Name="Jimmy Duncan" if CurrentHouseName=="Jimmy Duncan"
replace HouseCand1Name="Joe Kennedy" if CurrentHouseName=="Joe Kennedy"
replace HouseCand1Name="John B. Larson" if CurrentHouseName=="John B. Larson"
replace HouseCand1Name="John Conyers" if CurrentHouseName=="John Conyers"
replace HouseCand2Name="Lamar S. Smith" if CurrentHouseName=="Lamar S. Smith"
replace HouseCand1Name="Michael Doyle" if CurrentHouseName=="Michael Doyle"
replace HouseCand2Name="Pat Meehan" if CurrentHouseName=="Pat Meehan"
replace HouseCand2Name="Pat Tiberi" if CurrentHouseName=="Pat Tiberi"
replace HouseCand1Name="Rick Larsen" if CurrentHouseName=="Rick Larsen"
replace HouseCand2Name="Rob Wittman" if CurrentHouseName=="Rob Wittman"
replace HouseCand2Name="Timothy F. Murphy" if CurrentHouseName=="Timothy F. Murphy"
replace HouseCand2Name="Walter Jones" if CurrentHouseName=="Walter Jones"
replace HouseCand1Name="William Clay" if CurrentHouseName=="William Clay"

*create an effectiveness treatment dummy
gen efinfo=0
replace efinfo=1 if UVA307rand==3| UVA307rand==4
label var efinfo "1 = received informational treatment"

*creating separate variables for actual effectiveness
gen effective= effectiveness=="highly effective" if !missing("effectiveness")
label var effective "1 = Actually highly effective"
gen avgeffective=effectiveness=="average in effectiveness" if !missing("effectiveness")
label var avgeffective "1 = Actually average effectiveness"
gen ineffective=effectiveness=="not effective" if !missing("effectiveness")
label var ineffective "1 = Actually ineffective"

** To calculate correlation
	gen effective_numeric=effective*1 + avgeffective*2 + ineffective*3
** For the tabplot graph reverse the scale
	gen effective_graph=4-effective_numeric
	label var effective_graph "1 = Actually ineffective, 2 = Average, 3 = Highly"

*creating separate variables for perceived effectiveness
gen r_effective=UVA313==1 if UVA313!=.
label var r_effective "1 = Perceived highly effective"
gen r_avgeffective=UVA313==2 if UVA313!=.
label var r_avgeffective "1 = Perceived average effectiveness"
gen r_ineffective=UVA313==3 if UVA313!=.
label var r_ineffective "1 = Perceived ineffective"

*create party dummies (inc. leaners)
gen dem=0
replace dem=1 if pid3==1 | pid7==3
label var dem "1 = Democrat, including leaners"
gen rep=0
replace rep=1 if pid3==2 | pid7==5
label var rep "1 = Republican, including leaners"

*dichotomize approval
gen approve=.
replace approve=1 if UVA307==1 | UVA307==2
replace approve=0 if UVA307==3 | UVA307==4
label var approve "Dichotomous job approval"

*4 category approval
gen approve4=.
replace approve4=0 if UVA307==4
replace approve4=.333 if UVA307==3
replace approve4=.666 if UVA307==2
replace approve4=1 if UVA307==1
label var approve4 "Four category job approval"

*w2 approval
gen approvew2=.
replace approvew2=1 if UVA404==1 | UVA404==2
replace approvew2=0 if UVA404==3 | UVA404==4
label var approvew2 "Wave 2, dichotomous approval"

*vote intent
gen voteforrep=0
replace voteforrep=1 if UVA312==1 & HouseCand1Name==CurrentHouseName
replace voteforrep=1 if UVA312==2 & HouseCand2Name==CurrentHouseName
label var voteforrep "1 = plan to vote for incumbent"
drop if HouseCand2Name!=CurrentHouseName & HouseCand1Name!=CurrentHouseName

**Reported vote, Wave 2
gen voteforrepw2=0
replace voteforrepw2=1 if CC16_412==1 & HouseCand1Name==CurrentHouseName
replace voteforrepw2=1 if CC16_412==2 & HouseCand2Name==CurrentHouseName
label var voteforrepw2 "1 = reported voting for incumbent"

*create the three treatment vars
gen treatef=0
replace treatef=1 if efinfo==1 & effectiveness=="highly effective"
label var treatef "1 = Received treatment and highly effective"

gen treatavgef=0
replace treatavgef=1 if efinfo==1 & effectiveness=="average in effectiveness"
label var treatavgef "1 = Received treatment and average effectiveness"

gen treatinef=0
replace treatinef=1 if efinfo==1 & effectiveness=="not effective"
label var treatinef "1 = Received treatment and ineffective"

*identify copartisans
gen copartisan=.
replace copartisan=1 if dem==1 & party=="Democrat"
replace copartisan=1 if rep==1 & party=="Republican"
replace copartisan=0 if dem==1 & party=="Republican"
replace copartisan=0 if rep==1 & party=="Democrat"
label var copartisan "1 = Representative is from respondent's party"

*********************
*********************
******ANALYSIS*******
*********************
*********************

** Outcome = Approve of MC

** Basic Levels of Knowledge in Control Group (For Figure 1 in paper)
	tab UVA313 effective_numeric if efinfo==0, chi
	corr  UVA313 effective_numeric if efinfo==0
	tabplot UVA313 effective_graph if efinfo==0, percent(effective_graph)  horizontal ytitle("Perceived" "Effectiveness") ylab(1 "Ineffective" 2 "Average" 3 "Highly Effective") xtitle( " " "Actual Effectiveness") xlabel(1 "Ineffective" 2 "Average" 3 "Highly Effective") showval(format(%2.1f) mlabsize(vsmall) offset(0.25)) title("CCES Survey (Control Group)", size(medium)) subtitle(" ") 
		graph save knowledge_cces, replace

** Relationship between approval and actual/perceived Effectiveness in Control Group (For Figure 2 in paper)
	bysort effective_numeric: egen perc_approve_true=mean(approve) if efinfo==0
	bysort UVA313: egen perc_approve_perceived=mean(approve) if efinfo==0
	graph bar (mean) perc_approve_true, ylabel(0(.2)1) over(effective_graph, relabel(1"Ineffective" 2 "Average" 3 "Highly Effective")) ytitle(Percent Approving of Legislator) title("CCES, Actual Effectiveness") 
		graph save approve_actual_cces.gph, replace 
		
		gen l2=4-UVA313 /*Create this in order to get scale right on graph*/
	graph bar (mean) perc_approve_perceived, ylabel(0(.2)1) over(l2, relabel(1"Ineffective" 2 "Average" 3 "Highly Effective")) ytitle(Percent Approving of Legislator) title("CCES, Perceived Effectiveness")
		graph save approve_perceived_cces.gph, replace 

** Approval not based on raw LES either in Control Group
	reg approve les if efinfo==0
	* Or on majority status or chair positions
	reg approve les chair subchr majority seniority if efinfo==0
	* Although somewhat on seniority
	reg approve seniority if efinfo==0
		
** Perceived effectiveness also not based on raw LES either in Control Group
	gen r_eff3=.
	replace r_eff3=1 if r_ineffective==1
	replace r_eff3=2 if r_avgeffective==1
	replace r_eff3=3 if r_effective==1
	label var r_eff3 "1 = Perceive ineffective, 2 = perceived average, 3 = perceived highly effective"
	reg r_eff3 les if efinfo==0
	* Or on majority status or chair positions
	reg r_eff3 les chair subchr majority seniority if efinfo==0
	* Although somewhat on seniority
	reg r_eff3 seniority if efinfo==0

*************************************
** Figure 4: Main Treatment Effect **
*************************************

** Results in Paper
	reg approve efinfo if effective==1
	est store Effective

	reg approve efinfo if avgeffective==1
	est store Avg_Effective

	reg approve efinfo if ineffective==1 
	est store Ineffective

	coefplot (Effective, drop(_cons) mcol(green) label(Highly Effective)) (Avg_Effective, drop(_cons) mcol(black) label(Average)) (Ineffective, drop(_cons) mcol(red)),  ylabel("") title("CCES, Approval of Lawmaker, Treatment Effects", size(medium)) legend(row(1) order(6 4 2)) xlabel (-.4 "-.4" -.2 "-.2" 0 "0" .2 ".2" .4 ".4" -.3 `"" " "Lower Approval""'  .3`"" "  "Higher Approval""', noticks) xtitle(Effect of Effectiveness Information on Approval of their Lawmaker)	
		graph save "MainTreatment_CCES.gph", replace
		
** Appendix
	logit approve efinfo if effective==1
	margins, at(efinfo=(0(1)1)) post
	est store Effective

	logit approve efinfo if avgeffective==1
	margins, at(efinfo=(0(1)1)) post
	est store Avg_Effective

	logit approve efinfo if ineffective==1 
	margins, at(efinfo=(0(1)1)) post
	est store Ineffective

	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Control" `=2' "Treated") title("CCES, Approval of Lawmaker", size(medium)) legend(row(1) order(6 4 2))
		graph save "MainTreatment_CCES_Appendix.gph", replace

** Same as above, but weighted
	logit approve efinfo [pw=weight] if effective==1
	margins, at(efinfo=(0(1)1)) post
	est store Effective

	logit approve efinfo [pw=weight] if avgeffective==1
	margins, at(efinfo=(0(1)1)) post
	est store Avg_Effective

	logit approve efinfo  [pw=weight] if ineffective==1 
	margins, at(efinfo=(0(1)1)) post
	est store Ineffective

	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Control" `=2' "Treated") title("Weighted CCES, Approval of Lawmaker") legend(row(1) order(6 4 2)) 
		graph save "MainTreatment_CCES_weighted.gph", replace

		
******************************************************************
** Figure 5: Heterogeneous Treatment Effects, by copartisanship **
******************************************************************

** Results in Paper
	reg approve efinfo if effective==1 & copartisan==1
		est store E1
	reg approve efinfo if effective==1 & copartisan==0
		est store E2
		
	reg approve efinfo if avgeffective==1 & copartisan==1
		est store A1
	reg approve efinfo if avgeffective==1 & copartisan==0
		est store A2

	reg approve efinfo if ineffective==1 & copartisan==1
		est store I1
	reg approve efinfo if ineffective==1 & copartisan==0
		est store I2

	coefplot (E1, drop(_cons) mcol(green) msymbol(O) label(Highly Effective)) (A1, drop(_cons) mcol(black) msymbol(D)  label(Average)) (I1, drop(_cons) mcol(red) msymbol(S)  label(Ineffective))   (E2, drop(_cons) mcol(green) msymbol(O) label(Highly Effective)) (A2, drop(_cons) mcol(black) msymbol(D) label(Average)) (I2, drop(_cons) mcol(red) msymbol(S) label(Ineffective)),  ylabel("")  title("CCES Approval, by Partisan Alignment")  ylabel(.8 "Copartisan" 1.2 "Outparty") legend(row(1) order(6 4 2)) xlabel (-.4 "-.4" -.2 "-.2" 0 "0" .2 ".2" .4 ".4" -.3 `"" " "Lower Approval""'  .3`"" "  "Higher Approval""', noticks) xtitle(Effect of Effectiveness Information on Approval of their Lawmaker)
		graph save "Partisanship_CCES.gph", replace

** Appendix
	logit approve copartisan##efinfo if effective==1 
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Effective
	
	logit approve copartisan##efinfo if avgeffective==1
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Avg_Effective

	logit approve copartisan##efinfo if ineffective==1 
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Ineffective

	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Outparty, Control" `=2' "Outparty, Treated" `=3' "Copartisan, Control" `=4' "Copartisan, Treated")  title("CCES Approval, by Partisan Alignment") legend(row(1) order(6 4 2))
		graph save "Partisanship_CCES_Appendix.gph", replace

		
** Note: if run this separately for Democrats and Republicans, get about the same patterns, but with more noise		

** Same as above, but weighted
	logit approve copartisan##efinfo [pw=weight] if effective==1 
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Effective
	
	logit approve copartisan##efinfo [pw=weight] if avgeffective==1
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Avg_Effective

	logit approve copartisan##efinfo [pw=weight] if ineffective==1 
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
		est store Ineffective

	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Outparty, Control" `=2' "Outparty, Treated" `=3' "Copartisan, Control" `=4' "Copartisan, Treated")  title("Weighted CCES Approval, by Partisan Alignment") legend(row(1) order(6 4 2))
		graph save "Partisanship_CCES_weighted.gph", replace


************************************************************
** Figure 6: Heterogenenous treatment effects by ideology **
************************************************************

*Create ideological extremism indicator
gen extreme=0
replace extreme=1 if CC16_340a==1 | CC16_340a==2 | CC16_340a==6 | CC16_340a==7
label var extreme "1 = Self identified as Very Liberal, Liberal, Conservative, or Very Conservative"

** Results in Paper
	reg approve efinfo if effective==1 & extreme==1
		est store E1
	reg approve efinfo if effective==1 & extreme==0
		est store E2
		
	reg approve efinfo if avgeffective==1 & extreme==1
		est store A1
	reg approve efinfo if avgeffective==1 & extreme==0
		est store A2

	reg approve efinfo if ineffective==1 & extreme==1
		est store I1
	reg approve efinfo if ineffective==1 & extreme==0
		est store I2

	coefplot (E1, drop(_cons) mcol(green) msymbol(O) label(Highly Effective)) (A1, drop(_cons) mcol(black) msymbol(D)  label(Average)) (I1, drop(_cons) mcol(red) msymbol(S)  label(Ineffective))   (E2, drop(_cons) mcol(green) msymbol(O) label(Highly Effective)) (A2, drop(_cons) mcol(black) msymbol(D) label(Average)) (I2, drop(_cons) mcol(red) msymbol(S) label(Ineffective)),  ylabel("")  title("CCES Approval, by Ideological Extermism") ylabel(.8 "Extreme" 1.2 "Moderate") legend(row(1) order(6 4 2)) xlabel (-.4 "-.4" -.2 "-.2" 0 "0" .2 ".2" .4 ".4" -.3 `"" " "Lower Approval""'  .3`"" "  "Higher Approval""', noticks) xtitle(Effect of Effectiveness Information on Approval of their Lawmaker) 
		graph save "IdeologicalExtremism_CCES.gph", replace
		
** Appendix
logit approve extreme##efinfo if effective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Effective
	
	logit approve extreme##efinfo if avgeffective==1
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Avg_Effective

	logit approve extreme##efinfo if ineffective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Ineffective

	coefplot (Effective, mcol(green) label (Highly Effective)) (Avg_Effective, mcol(black) label (Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Moderate, Control" `=2' "Moderate, Treated" `=3' "Extreme, Control" `=4' "Extreme, Treated")  title("CCES Approval, by Ideological Extremism") legend(row(1) order(6 4 2))
		graph save "IdeologicalExtremism_CCES_Appendix.gph", replace

** Same as above, but weighted

logit approve extreme##efinfo [pw=weight] if effective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Effective
	
	logit approve extreme##efinfo [pw=weight] if avgeffective==1
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Avg_Effective

	logit approve extreme##efinfo [pw=weight] if ineffective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Ineffective

	coefplot (Effective, mcol(green) label (Highly Effective)) (Avg_Effective, mcol(black) label (Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Moderate, Control" `=2' "Moderate, Treated" `=3' "Extreme, Control" `=4' "Extreme, Treated")  title("Weighted CCES Approval, by Ideological Extremism") legend(row(1) order(6 4 2))
		graph save "IdeologicalExtremism_CCES_weighted.gph", replace


*****************
*****************	
**   Appendix  **
**   Figures   **
*****************
*****************
		
** Relationship between vote and actual/perceived Effectiveness
	bysort effective_numeric: egen perc_vote_true=mean(voteforrep)
	bysort UVA313: egen perc_vote_perceived=mean(voteforrep)
	graph bar (mean) perc_vote_true, ylabel(0(.2)1) over(UVA313, relabel(1"Ineffective" 2 "Average" 3 "Effective")) ytitle(Probability of Voting for Legislator) title("CCES, Actual Effectiveness") 
		graph save vote_actual_cces.gph, replace 
		
		*gen l2=4-UVA313 /*Create this in order to get scale right on graph*/
	graph bar (mean) perc_vote_perceived, ylabel(0(.2)1) over(l2, relabel(1"Ineffective" 2 "Average" 3 "Effective")) ytitle(Probability of Voting for Legislator) title("CCES, Perceived Effectiveness")
		graph save vote_perceived_cces.gph, replace 

** Main Treatment Effect - Vote Intention
	logit voteforrep efinfo if effective==1
	margins, at(efinfo=(0(1)1)) post
	est store Effective

	logit voteforrep efinfo if avgeffective==1
	margins, at(efinfo=(0(1)1)) post
	est store Avg_Effective

	logit voteforrep efinfo if ineffective==1 
	margins, at(efinfo=(0(1)1)) post
	est store Ineffective

	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Control" `=2' "Treated") title("CCES, Intention to Reelect Lawmaker", size(medium)) legend(row(1) order(6 4 2))
		graph save "MainTreatment_CCES_vote.gph", replace

** Heterogeneous treatment effects by copartisanship
	logit voteforrep copartisan##efinfo if effective==1  
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
	est store Effective

	logit voteforrep copartisan##efinfo if avgeffective==1 
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
	est store Avg_Effective

	logit voteforrep copartisan##efinfo if ineffective==1  
		margins, at(efinfo=(0(1)1) copartisan=(0(1)1)) post
	est store Ineffective

	logit voteforrep efinfo if copartisan==1 & ineffective==1
	ttest voteforrep if copartisan==1 & ineffective==1, by(efinfo)
	
	coefplot (Effective, mcol(green) label(Highly Effective)) (Avg_Effective, mcol(black) label(Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Outparty, Control" `=2' "Outparty, Treated" `=3' "Copartisan, Control" `=4' "Copartisan, Treated") title("CCES Reelection, by Partisan Alignment", size(medium)) legend(row(1) order(6 4 2))
		graph save "Partisanship_CCES_vote.gph", replace

** Heterogenenous treatment effects by ideology (for Figure 6 in Paper)

	logit voteforrep extreme##efinfo if effective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Effective
	
	logit voteforrep extreme##efinfo if avgeffective==1
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Avg_Effective

	logit voteforrep extreme##efinfo if ineffective==1 
		margins, at(efinfo=(0(1)1) extreme=(0(1)1)) post
		est store Ineffective

	logit voteforrep efinfo if extreme==0 & ineffective==1
	ttest voteforrep if extreme==0 & ineffective==1, by(efinfo)
	
	logit voteforrep efinfo if extreme==0 & effective==1
	ttest voteforrep if extreme==0 & effective==1, by(efinfo)
	
	coefplot (Effective, mcol(green) label (Highly Effective)) (Avg_Effective, mcol(black) label (Average)) (Ineffective, mcol(red)),  ylabel(`=1' "Moderate, Control" `=2' "Moderate, Treated" `=3' "Extreme, Control" `=4' "Extreme, Treated")  title("CCES Reelection, by Ideological Extremism") legend(row(1) order(6 4 2))
		graph save "IdeologicalExtremism_CCES_vote.gph", replace

*Note: Moderates seem more responsive to treatment	

************************
************************	
**      Appendix      **
**       Tables       **
************************
************************

** Appendix table A3
reg approve efinfo if effective==1
reg approve efinfo if avgeffective==1
reg approve efinfo if ineffective==1

** Appendix table A4
logit approve efinfo if effective==1
logit approve efinfo if avgeffective==1
logit approve efinfo if ineffective==1

** Appendix table A7
reg approve efinfo if effective==1  & copartisan==1
reg approve efinfo if effective==1  & copartisan==0
reg approve efinfo if avgeffective==1  & copartisan==1
reg approve efinfo if avgeffective==1  & copartisan==0
reg approve efinfo if ineffective==1  & copartisan==1
reg approve efinfo if ineffective==1  & copartisan==0

** Appendix table A8
logit approve copartisan##efinfo if effective==1  
logit approve copartisan##efinfo if avgeffective==1  
logit approve copartisan##efinfo if ineffective==1  
	
** Appendix table A11
reg approve efinfo if extreme==1 & effective==1
reg approve efinfo if extreme==0 & effective==1
reg approve efinfo if extreme==1 & avgeffective==1
reg approve efinfo if extreme==0 & avgeffective==1
reg approve efinfo if extreme==1 & ineffective==1
reg approve efinfo if extreme==0 & ineffective==1

** Appendix table A12
logit approve extreme##efinfo if effective==1  
logit approve extreme##efinfo if avgeffective==1  
logit approve extreme##efinfo if ineffective==1  

** Appendix table A14
reg approve4 efinfo if effective==1
reg approve4 efinfo if avgeffective==1
reg approve4 efinfo if ineffective==1

** Appendix table A16
reg approve4 efinfo if effective==1  & copartisan==1
reg approve4 efinfo if effective==1  & copartisan==0
reg approve4 efinfo if avgeffective==1  & copartisan==1
reg approve4 efinfo if avgeffective==1  & copartisan==0
reg approve4 efinfo if ineffective==1  & copartisan==1
reg approve4 efinfo if ineffective==1  & copartisan==0
 
 ** Appendix table A18
reg approve4 efinfo if extreme==1 & effective==1
reg approve4 efinfo if extreme==0 & effective==1
reg approve4 efinfo if extreme==1 & avgeffective==1
reg approve4 efinfo if extreme==0 & avgeffective==1
reg approve4 efinfo if extreme==1 & ineffective==1
reg approve4 efinfo if extreme==0 & ineffective==1
 
